From: Carlos Garnacho Date: Tue, 28 Feb 2017 12:35:57 +0000 (+0100) Subject: switcherPopup: Ignore implicit enter events when the popup is mapped X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~335 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=e94de67bd22626839fe4c4cb1bcc84e3b1dbe856;p=gnome-shell.git switcherPopup: Ignore implicit enter events when the popup is mapped If the popup happens to be mapped beneath the pointer, mutter will now emit an implicit enter notify event (i.e. not caused by pointer motion). In this case the switcherPopup still goes and selects the item, which results in too sensitive alt-tab menus if the pointer happens to be in the wrong place. Make highlighting rely on motion events instead, so it always involves user interaction when triggered by the pointer. https://bugzilla.gnome.org/show_bug.cgi?id=755164 --- diff --git a/js/ui/switcherPopup.js b/js/ui/switcherPopup.js index ae7bc7714..4538ceb38 100644 --- a/js/ui/switcherPopup.js +++ b/js/ui/switcherPopup.js @@ -385,7 +385,7 @@ const SwitcherList = new Lang.Class({ let n = this._items.length; bbox.connect('clicked', Lang.bind(this, function() { this._onItemClicked(n); })); - bbox.connect('enter-event', Lang.bind(this, function() { this._onItemEnter(n); })); + bbox.connect('motion-event', Lang.bind(this, function() { return this._onItemEnter(n); })); bbox.label_actor = label; @@ -399,7 +399,11 @@ const SwitcherList = new Lang.Class({ }, _onItemEnter: function (index) { - this._itemEntered(index); + // Avoid reentrancy + if (index != this._currentItemEntered) { + this._currentItemEntered = index; + this._itemEntered(index); + } return Clutter.EVENT_PROPAGATE; },